// 实例化nwe路由
const router = require('koa-router')()
// 统一给前端返回的josn方式
const result = require('../jian-config/body-result.js')
// 数据库操作的接口
const { getToken, addurl, chaxun_refer, Updateurl } = require('../jian-config/shuojuku-database') // addurl 数据库插入记录链接
// 校监前端数据传过来的时候是否验证合格
const { shopinfor, catecheck } = require('../jian-config/xiaoyan-charm')
// 验证token的合法性
const { Decryption } = require('../jian-config/jiami-token')
// 图片上传
const { upload, cosfun } = require('../tengxunyun-cos/multer-cos')

// 图片上传接口    name : file 和前端 头像 上传文件保持一致
router.post('/uploadres', upload.single('file'), async ctx => {
    // ctx.file 接受前端上传的静态文件
    try {
        // 存储
        const res = await cosfun(ctx.file.filename, ctx.file.path)
        // res => dianchan-1315721788.cos.ap-guangzhou.myqcloud.com/diancan/image/1684763776672-702462452.jpg
        new result(ctx, '图片上传成功', 200, 'https://' + res)
    } catch (error) {
        new result(error, '上传失败，服务器发送错误', 500)
    }
})

// 商家信息上传
router.post('/uploadshop', new Decryption().m, async ctx => {
    const { id, name, address, logo } = ctx.request.body
    new shopinfor(ctx, name, address, logo).start() // 校验
    // 插入店铺用户信息 logo 是一个数组，不需要加引号变成字符串
    const query = `db.collection('shop-infor').add({data:{name:'${name}',address:'${address}',logo:${logo}}})`
    try {
        await new getToken().database(addurl, query)
        new result(ctx, '提交成功', 200)
    } catch (error) {
        new result(error, '提交失败，服务器发生错误', 500)

    }
})

// 商家信息获取
router.get('/obtainshop', new Decryption().m, async ctx => {
    // // 插入店铺用户信息 logo 是一个数组，不需要加引号变成字符串
    const query = `db.collection('shop-infor').get()`
    try {
        let res = await new getToken().database(chaxun_refer, query)
        new result(ctx, '提交成功', 200, res)
    } catch (error) {
        new result(error, '提交失败，服务器发生错误', 500)

    }
})


// 更新修改商家信息
router.post('/modifyshop', new Decryption().m, async ctx => {
    const { id, name, address, logo } = ctx.request.body
    new shopinfor(ctx, name, address, logo).start() // 校验
    const query = `db.collection('shop-infor').doc('${id}').update({data:{name:'${name}',address:'${address}',logo:${logo}}})`
    try {
        await new getToken().database(Updateurl, query)
        new result(ctx, '修改成功', 200)
    } catch (error) {
        new result(error, '修改失败，服务器发生错误', 500)

    }
})

// 下架菜品
router.get('/fromsale', new Decryption().m, async ctx=>{
	const {id,value} = ctx.query
	// 修改该条菜品的onsale为false
	const query = `db.collection('dishes-data').doc('${id}').update({data:{onsale:false}})`
	// 查询到在哪个类目下将count字段自减
	let count = `db.collection('dishes-category').where({cid:'${value}'}).update({data:{count:db.command.inc(-1)}})`
	try{
		await new getToken().database(Updateurl,query)
		await new getToken().database(Updateurl,count)
		new result(ctx,'已下架').answer()
	}catch(error){
		new result(error,'服务器发生错误',500)
	}
})



module.exports = router.routes()